home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / bbsutil / hsrc_117.zip / EDITOR2.C < prev    next >
Text File  |  1990-11-24  |  3KB  |  126 lines

  1. /* Editor2.C File */
  2.  
  3. #include "msgg.h"
  4. #include "twindow.h"
  5. #include "headedit.h"
  6. #include "keys.h"
  7.  
  8. extern void pascal dcls(void);
  9. extern void pascal dputc(int x, int y, int c);
  10. extern int  pascal dputs(int x, int y, char *s);
  11. extern void pascal dclrwnd(int x1, int y1, int x2, int y2);
  12. extern void pascal dscrollup(int x1, int y1, int x2, int y2);
  13. extern void pascal dscrolldn(int x1, int y1, int x2, int y2);
  14.  
  15. extern word vbase;
  16. extern word maxx;
  17. extern word maxy;
  18. extern char current_color;
  19. extern word videomethod;
  20.  
  21. extern char keybuf[256];
  22. extern int VSG;
  23. extern int last_x,last_y;
  24. extern char abortedit;
  25.  
  26. char * pascal get_string (char *text,char len,char *deflt,char type);
  27. char pascal ask_question (char *text);
  28. int pascal do_macro (int c);
  29.  
  30.  
  31.  
  32. char * pascal get_string (char *text,char len,char *deflt,char type) {
  33.  
  34.   int c;
  35.   WINDOW *sur;
  36.   FIELD *fld;
  37.   static char s[80];
  38.   char *msk;
  39.  
  40.   if(len>76) len=76;
  41.   if(strlen(text)>(76))text[76]=0;
  42.   if(!deflt) *s=0;
  43.   else {
  44.     strncpy(s,deflt,len);
  45.     s[len-1]=0;
  46.   }
  47.   if(!type) type='a';
  48.   c=max(strlen(text),len);
  49.   sur=establish_window((80-(c+4))/2,11,4,max(18,c+4));
  50.   set_colors(sur,ALL,RED,YELLOW,BRIGHT);
  51.   set_title(sur," Answer or Die ");
  52.   display_window(sur);
  53.   wprintf(sur," %s",text);
  54.   init_template(sur);
  55.   msk=msk78+(78-len);
  56.   fld=establish_field(sur,1,1,msk,s,type);
  57.   field_window(fld,"",40,6);
  58.   prep_template(sur);
  59.   c=data_entry(sur);
  60.   delete_window(sur);
  61.   if(c!=F10) *s=0;
  62.   rstrip(s);
  63.   return s;
  64. }
  65.  
  66.  
  67. /* Ask a question, return Y,N,ESC or \r */
  68.  
  69. char pascal ask_question (char *text) {
  70.  
  71.   int c=0,width;
  72.   WINDOW *sur;
  73.  
  74.   width=max(26,strlen(text)+4);
  75.   width=min(width,80);
  76.   sur=establish_window(28,11,4,width);
  77.   set_help("yesnohelp ",0,0);
  78.   set_colors(sur,ALL,RED,YELLOW,BRIGHT);
  79.   set_title(sur," Yes or No ");
  80.   display_window(sur);
  81.   wprintf(sur,"%s",text);
  82.   while (c!='Y' && c!='N' && c!=ESC && c!='\r') {
  83.     c=get_char();
  84.     c=toupper(c);
  85.   }
  86.   delete_window(sur);
  87.   set_help("edithelp  ",0,0);
  88.   return (char)c;
  89. }
  90.  
  91.  
  92. int pascal do_macro (int c) {
  93.  
  94.     int fp;
  95.     char *p;
  96.     char str[256];
  97.  
  98.     p=searchpath("HEADMACR.DEF");
  99.     if(!p)p="HEADMACR.DEF";
  100.     fp=_open(p,O_RDONLY | O_DENYNONE | O_BINARY);
  101.     if(fp==-1) {
  102.         error_message(" Unable to open HEADMACR.DEF ");
  103.         pause();
  104.         return -1;
  105.     }
  106.     while(!eof(fp)) {
  107.         if(!fgetsx(str,256,fp)) break;
  108.         str[255]=0;
  109.         if(atoi(str)==c) {
  110.             stripcr(str);
  111.             lstrip(str);
  112.             p=str;
  113.             while(p=strchr(p,'|'))*p='\r';
  114.             p=strchr(str,' ');
  115.             if(p)p++;
  116.             else p=str;
  117.             strncpy(keybuf,convertstring(p),256);
  118.             keybuf[255]=0;
  119.             _close(fp);
  120.             return 1;
  121.         }
  122.     }
  123.     _close(fp);
  124.     return 0;
  125. }
  126.